import { fileURLToPath, URL } from "node:url";
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import VueSetupExtend from "vite-plugin-vue-setup-extend";
// mock
import { viteMockServe } from "vite-plugin-mock";

// https://vitejs.dev/config/
export default defineConfig({
  resolve: {
    alias: {
      "@": fileURLToPath(new URL("./src", import.meta.url))
    }
  },
  build: {
    // 消除打包大小超过 500kb 警告
    chunkSizeWarningLimit: 2300,
    // 禁用 gzip 压缩大小报告，可略微减少打包时间
    reportCompressedSize: false,
    outDir: "dist",
    minify: "esbuild",
    // esbuild 打包更快，但是不能去除 console.log，terser打包慢，但能去除 console.log
    // minify: "terser",
    // 在打包代码时移除 console.log、debugger 和 注释
    // terserOptions: {
    //   compress: {
    //     drop_console: false,
    //     drop_debugger: true,
    //     pure_funcs: ["console.log"]
    //   }
    // },
    rollupOptions: {
      output: {
        // Static resource classification and packaging
        chunkFileNames: "assets/js/[name]-[hash].js",
        entryFileNames: "assets/js/[name]-[hash].js",
        assetFileNames: "assets/[ext]/[name]-[hash].[ext]"
      }
    }
  },
  plugins: [
    vue(),
    vueJsx(),
    // name 可以写在 script 标签上
    VueSetupExtend(),
    //启动mock服务
    viteMockServe({
      watchFiles: false, // 是否实时更新
      logger: false,
      mockPath: "./src/mock/"
    })
  ],
  // server config
  server: {
    host: "0.0.0.0", // 服务器主机名，如果允许外部访问，可设置为"0.0.0.0"
    port: 3033,
    open: true, // 自动打开浏览器
    cors: true
    // 代理跨域
    // proxy: {
    //   "/api": {
    //     target: "",
    //     changeOrigin: true,
    //     rewrite: path => path.replace(/^\/api/, "")
    //   }
    // }
  }
});
